{
  config,
  pkgs,
  lib,
  ...
}: {
  editorconfig.enable = true;
  fonts.fontconfig.enable = true;
  programs = {
    # Let Home Manager install and manage itself.
    home-manager.enable = true;
    neovim = {
      enable = true;
      defaultEditor = true;
      vimAlias = true;
      viAlias = true;
      extraConfig = ''
        set tabstop=4
        set shiftwidth=4
        set expandtab
      '';
      plugins = with pkgs.vimPlugins; [
        lualine-nvim
        lightline-vim
        catppuccin-nvim
      ];
    };
    htop = {
      enable = true;
      settings.show_program_path = true;
    };
    skim = {
      enable = true;
      enableBashIntegration = true;
    };
    starship = {
      enable = true;
      enableBashIntegration = true;
      settings = {
        add_newline = false;
      };
    };
    vscode = {
      enable = true;
      extensions = with pkgs.vscode-extensions; [
      ];
    };
  };
  home = {
    enableNixpkgsReleaseCheck = true;
    stateVersion = "24.11";
    packages = with pkgs; [
      zip
      xz
      # rar
      unzip
      coreutils
      ripgrep
      jq
      fzf
      socat
      nmap
      cowsay
      file
      alejandra
      rmtrash
      winetricks
      python310
      q4wine
      # obsidian
    ];
    sessionPath = []; # $path
    shellAliases = {
      "remote-rebuild" = "nixos-rebuild switch --build-host root@1.14.67.92";
    }; # alias
    # 环境变量
    sessionVariables = {
      LANG = "en_US";
      "NIX_SSHOPTS" = "-tt";
    };
    activation = {
      hideWaydroidApp =
        lib.hm.dag.entryAfter ["writeBoundary"]
        ''
          dir="~/.local/share/applications/"
          if [ -d "$dir" ]; then
              for file in "$dir"waydroid.*.desktop; do
                  if [ -f "$file" ]; then
                      sed -si '/Actions=app_settings/a NoDisplay=true' "$file"
                  else
                      echo "File $file does not exist."
                  fi
              done
          else
              echo "Directory $dir does not exist."
          fi
        '';
    };
  };
  targets.genericLinux.enable = true;
}
